home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 10 / FM Towns Free Software Collection 10.iso / tos_updt / fmcity / palcom / auto / script / bbssel.mx < prev    next >
Text File  |  1995-04-11  |  20KB  |  676 lines

  1. //--------------------------------------------------------------------------//
  2. //                        PALCOM V2.1 L10                        //
  3. //                        自動通信:巡回掲示板の選択                            //
  4. //                                                                            //
  5. //                                        CopyRight(C) 1994/10/20                //
  6. //                                FUJITSU PERSONAL COMPUTER SYSTEMS LIMITED    //
  7. //                                        written by C-cube Soft T.Nakamura    //
  8. //--------------------------------------------------------------------------//
  9. event    @OPEN.EXTERN {
  10.     //---   データの取得   ---//
  11.     $dataList   = Auto.makeBbsList( AUTO.getBbsData(), [1,4], 0 );
  12.     if( $dataList == #FALSE ) {
  13.         AUTO.setDialogReturn( 0 );
  14.         return;
  15.     }
  16.     $titleList  = list.getNth( $dataList, 1 );
  17.     $statusList = list.getNth( $dataList, 2 );
  18.     $idList     = list.getNth( $dataList, 3 );
  19.     $dayList    = list.getNth( $dataList, 4 );
  20.     $keyList    = list.getNth( $dataList, 5 );
  21.  
  22.     //---   掲示板情報が無い場合は、掲示板巡回を一度実行するように   ---//
  23.     //---                                             ユーザに促す   ---//
  24.     if( list.size( $titleList ) == 0 ) {
  25.         $saveXsize = dialog.getDefaultXSize();
  26.         dialog.setDefaultXSize( 352 );
  27.         sys.pushCursor( 80 );
  28.         dialog.ask(["━━━━━━━   巡回する掲示板の設定   ━━━━━━━",
  29.                     "",
  30.                     "   掲示板の情報が取得されていません。                 ",
  31.                     "   「自動通信の設定2」の「掲示板を読む」を有効にし、 ",
  32.                     " 一度この自動通信の手順を実行してください。           ",
  33.                     ""],["確認"] );
  34.         sys.popCursor();
  35.         dialog.setDefaultXSize( $saveXsize );
  36.         AUTO.setDialogReturn( 0 );
  37.         return;
  38.     }
  39.  
  40.     //---   ボタンの設定   ---//
  41.     $setBtnId  = dialog.makeButton( 1, "設定",     0, 0x8012 );
  42.     $canBtnId  = dialog.makeButton( 1, "取消",     0, 0x8011 );
  43.     $loopBtnId = dialog.makeButton( 1, "巡回",     0,      0 );
  44.     $extBtnId  = dialog.makeButton( 1, "条件設定", 0,      0 );
  45.     sys.global( $setBtnId  );
  46.     sys.global( $canBtnId  );
  47.     sys.global( $loopBtnId );
  48.     sys.global( $extBtnId  );
  49.  
  50.     //---   ダイアログ制御   ---//
  51.     $ret = Auto.bbsSel( $titleList, $statusList, $idList, $dayList, $keyList );
  52.  
  53.     //---   ボタンの開放   ---//
  54.     dialog.delButton( $setBtnId  );
  55.     dialog.delButton( $canBtnId  );
  56.     dialog.delButton( $loopBtnId );
  57.     dialog.delButton( $extBtnId  );
  58.     sys.local( $setBtnId  );
  59.     sys.local( $canBtnId  );
  60.     sys.local( $loopBtnId );
  61.     sys.local( $extBtnId  );
  62.  
  63.     if( $ret >= 0 ) {                            // 「設定」の場合
  64.         $dataList = Auto.remakeBbsList( $titleList, $statusList,
  65.                                                 $idList, $dayList, $keyList );
  66.         AUTO.setBbsData( $dataList );
  67.         AUTO.setDialogReturn( 1 );
  68.         return;
  69.     }
  70.     AUTO.setDialogReturn( 0 );
  71.     return;
  72. }
  73. event    @CLOSE.EXTERN {
  74.     return;
  75. }
  76. event    @ERROR    {
  77.     local.errorFunc();
  78.     event.mainLoop();
  79. }
  80.  
  81.  
  82.  
  83. //--------------------------//
  84. //---   ダイアログ制御   ---//
  85. //--------------------------//
  86. function    Auto.bbsSel( $titleList,$statusList,$idList,$dayList,$keyList ) {
  87.     //---   データの加工   ---//
  88.     $i = 1;
  89.     $ttMaxLen = 0;
  90.     $defList = [1];
  91.     $lsList  = [];
  92.     $ttList  = [];
  93.     $stList  = [];
  94.     $iiList  = [];
  95.     $dyList  = [];
  96.     $kyList  = [];
  97.     foreach( $a, $titleList ) {
  98.         if( data.getType( $a ) == #LIST ) {        // サブメニューがある
  99.             $st  = list.get1st( list.getNth( $statusList, $i ));
  100.             $tt  = str.join(["<", list.get1st( $a ), ">"], "" );
  101.             $id  = "";
  102.             $day = "";
  103.             $key = "";
  104.         } else {
  105.             $st  = list.getNth( $statusList, $i );
  106.             $id  = list.getNth( $idList,     $i );
  107.             $day = list.getNth( $dayList,    $i );
  108.             $key = list.getNth( $keyList,    $i );
  109.             $tt  = $a;
  110.         }
  111.         list.putLast( $ttList, $tt  );
  112.         list.putLast( $stList, $st  );
  113.         list.putLast( $iiList, $id  );
  114.         list.putLast( $dyList, $day );
  115.         list.putLast( $kyList, $key );
  116.         if( str.length( $tt ) > $ttMaxLen ) {
  117.             $ttMaxLen = str.length( $tt );
  118.         }
  119.         $i = $i + 1;
  120.     }
  121.     $i = 1;
  122.     foreach( $a, $stList ) {
  123.         list.putLast( $lsList, Auto.makeListStr( $a,
  124.                                                  list.getNth( $ttList, $i ),
  125.                                                  list.getNth( $dyList, $i ),
  126.                                                  list.getNth( $iiList, $i ),
  127.                                                  list.getNth( $kyList, $i ),
  128.                                                  $ttMaxLen ));
  129.         $i = $i + 1;
  130.     }
  131.  
  132.     //---   ダイアログデータの設定   ---//
  133.     $dialogList = ["掲示板の設定", 0, -1, -1, $setBtnId,
  134.             ["", 1028,       [80,10,0], $lsList, $defList],
  135.             ["", $canBtnId,  [0],       [""], [""]],
  136.             ["", $setBtnId,  [0],       [""], [""]],
  137.             ["", $extBtnId,  [0],       [""], [""]],
  138.             ["", $loopBtnId, [0],       [""], [""]]];
  139.  
  140.     //---   ダイアログの表示   ---//
  141.     $updateFlg = 0;
  142.     loop {
  143.         sys.pushCursor( 80 );
  144.         dialog.open( $dialogList );
  145.         sys.popCursor();
  146.  
  147.         //---   復帰データの設定   ---//
  148.         $btnId = list.get1st( $$DIALOG.RETURN );
  149.         $no    = list.get1st( list.getNth( $$DIALOG.RETURN, 2 ));
  150.  
  151.         //---   選択されていないと実行出来ない物のチェック   ---//
  152.         if(( $no == -1 )&&(( $btnId == $extBtnId )||( $btnId == $loopBtnId ))){
  153.             continue;
  154.         }
  155.  
  156.         list.del1st( $defList );
  157.         list.put1st( $defList, $no );
  158.         if( $btnId == $loopBtnId ) {            // 「巡回」ボタン
  159.             if( data.getType( list.getNth( $titleList, $no )) == #LIST ) {
  160.                 //---   サブメニューの選択   ---//
  161.                 $ret =Auto.bbsSel( list.getNth(list.getNth($titleList, $no),2),
  162.                                    list.getNth(list.getNth($statusList,$no),2),
  163.                                                list.getNth($idList,    $no),
  164.                                                list.getNth($dayList,   $no),
  165.                                                list.getNth($keyList,   $no));
  166.                 if( $ret == 0 ) {
  167.                     list.delNth( $stList, $no );
  168.                     list.putNth( $stList, $no - 1, #FALSE );
  169.                 } elif( $ret == 1 ) {
  170.                     list.delNth( $stList, $no );
  171.                     list.putNth( $stList, $no - 1, #TRUE );
  172.                 } else {
  173.                     continue;
  174.                 }
  175.             } else {
  176.                 if( list.getNth( $stList, $no ) == #TRUE ) {
  177.                     list.delNth( $stList, $no );
  178.                     list.putNth( $stList, $no - 1, #FALSE );
  179.                 } else {
  180.                     list.delNth( $stList, $no );
  181.                     list.putNth( $stList, $no - 1, #TRUE );
  182.                 }
  183.             }
  184.         } elif( $btnId == $extBtnId ) {            // 「条件設定」ボタン
  185.             if( data.getType( list.getNth( $titleList, $no )) == #LIST ) {
  186.                 continue;
  187.             }
  188.             if( Auto.setExt( $iiList, $dyList, $kyList, $no ) == 0 ) {
  189.                 continue;
  190.             }
  191.         } else {
  192.             exit;
  193.         }
  194.         list.delNth( $lsList, $no );
  195.         list.putNth( $lsList, $no - 1,
  196.                             Auto.makeListStr( list.getNth( $stList, $no ),
  197.                                               list.getNth( $ttList, $no ),
  198.                                               list.getNth( $dyList, $no ),
  199.                                               list.getNth( $iiList, $no ),
  200.                                               list.getNth( $kyList, $no ),
  201.                                               $ttMaxLen ));
  202.         $updateFlg = 1;
  203.         continue;
  204.     }
  205.  
  206.     //---   復帰データの設定   ---//
  207.     if( $btnId == $setBtnId ) {
  208.         $ret = 0;
  209.         if( $updateFlg == 1 ) {
  210.             $i = 1;
  211.             foreach( $a, $titleList ) {
  212.                 if( list.getNth( $stList, $i ) == #TRUE ) {
  213.                     $ret = 1;
  214.                 }
  215.                 if( data.getType( $a ) == #LIST ) {
  216.                     $wk = list.getNth( $statusList, $i );
  217.                     list.del1st( $wk );
  218.                     list.put1st( $wk, list.getNth( $stList, $i ));
  219.                     $i = $i + 1;
  220.                     continue;
  221.                 }
  222.                 list.delNth( $statusList, $i );
  223.                 list.putNth( $statusList, $i - 1, list.getNth( $stList, $i ));
  224.                 list.delNth( $idList,     $i );
  225.                 list.putNth( $idList,     $i - 1, list.getNth( $iiList, $i ));
  226.                 list.delNth( $dayList,    $i );
  227.                 list.putNth( $dayList,    $i - 1, list.getNth( $dyList, $i ));
  228.                 list.delNth( $keyList,    $i );
  229.                 list.putNth( $keyList,    $i - 1, list.getNth( $kyList, $i ));
  230.                 $i = $i + 1;
  231.             }
  232.         }
  233.         return( $ret );
  234.     }
  235.  
  236.     //---   「取消」ボタンの場合   ---//
  237.     return( -1 );
  238. }
  239.  
  240.  
  241.  
  242. //----------------------------------------//
  243. //---   掲示板の一覧リストを作成する   ---//
  244. //----------------------------------------//
  245. function    Auto.makeBbsList( $dataList, $tag, $mode ) {
  246.     $trdId      = AUTO.getTrdId();
  247.     $titleList  = [];
  248.     $statusList = [];
  249.     $idList     = [];
  250.     $dayList    = [];
  251.     $keyList    = [];
  252.  
  253.     if( $mode == 0 ) {
  254.         $tagSub = list.putLast( data.copy( $tag ), -2 );
  255.         $retList = trd.getData( $trdId, $tagSub );
  256.         if( list.get1st( $retList ) == 0 ) {
  257.             return([[],[],[],[],[]]);
  258.         }
  259.         dialog.openProg(["掲示板情報を読み込んでいます",""], "", #TRUE );
  260.     }
  261.  
  262.     //---   経過表示用にデータの個数を調べる   ---//
  263.     $errFlg = #FALSE;
  264.     if( $mode != 2 ) {
  265.         $num = 0;
  266.         $tagSub = list.putLast( data.copy( $tag ), -5 );
  267.         list.putLast( $tagSub, -2 );
  268.         loop {
  269.             $ret = trd.checkList( $trdId, $tagSub );
  270.             if( list.get1st( $ret ) == 0 ) {
  271.                 exit;
  272.             }
  273.             $tagSub = list.putLast( data.copy( $tag ),
  274.                                     list.getNth( list.getNth( $ret, 2 ),
  275.                                                  list.size( $tag ) + 1 ));
  276.             trd.checkListPush( $trdId );
  277.             $numSub = Auto.makeBbsList( [], $tagSub, 1 );
  278.             if( $numSub == #FALSE ) {
  279.                 if( $mode == 0 ) {
  280.                     sys.local( $num );
  281.                     sys.local( $cnt );
  282.                     dialog.close();
  283.                 }
  284.                 return( #FALSE );
  285.             }
  286.             if( $numSub == 0 ) {
  287.                 dialog.close();
  288.                 sys.pushCursor( 80 );
  289.                 $saveXsize = dialog.getDefaultXSize();
  290.                 dialog.setDefaultXSize( 352 );
  291.                 $ret = dialog.ask([
  292.                     "━━━━━━━   巡回する掲示板の設定   ━━━━━━━",
  293.                     "",
  294.                     "   掲示板の情報に異常が発見されました。               ",
  295.                     "",
  296.                     "   「継続」して設定を行う場合、一部の掲示板の設定が   ",
  297.                     " 行えない場合があります。                             ",
  298.                     ""],["中断", "継続"] );
  299.                 sys.popCursor();
  300.                 dialog.setDefaultXSize( $saveXsize );
  301.                 list.putLast( $tagSub, -2 );
  302.                 trd.delData( $trdId, $tagSub );
  303. trd.setData( $trdId, [1,5], "1" );
  304.                 AUTO.setTrdUpdateFlg();
  305.                 if( $ret == 0 ) {
  306.                     return( #FALSE );
  307.                 }
  308.                 dialog.openProg(["掲示板情報を読み込んでいます",""],"",#TRUE );
  309.             }
  310.             $num = $num + $numSub + 1;
  311.             trd.checkListPop( $trdId );
  312.             $tagSub = [];
  313.         }
  314.         $tagSub = list.putLast( data.copy( $tag ), -6 );
  315.         $num = $num + trd.count( $trdId, $tagSub );
  316.         if( $mode == 1 ) {
  317.             return( $num );
  318.         }
  319.     }
  320.     if( $mode == 0 ) {
  321.         if( $num == 0 ) {
  322.             trd.delData( $trdId, [1,4,-2] );
  323.             AUTO.setTrdUpdateFlg();
  324.             dialog.updateProg( 100 );
  325.             dialog.close();
  326.             return([[],[],[],[],[]]);
  327.         }
  328.         sys.global( $num );
  329.         sys.global( $cnt );
  330.         $cnt = 0;
  331.     }
  332.  
  333.     //---   便宜上グループデータから検索   ---//
  334.     $tagSub = list.putLast( data.copy( $tag ), -5 );
  335.     list.putLast( $tagSub, -2 );
  336.     loop {
  337.         $ret = trd.getData( $trdId, $tagSub );
  338.         if( list.get1st( $ret ) == 0 ) {
  339.             exit;
  340.         }
  341.         $str    = list.getNth( $ret, 2 );
  342.         $tagSub = list.putLast( data.copy( $tag ),
  343.                                 list.getNth( list.getNth( $ret, 3 ),
  344.                                              list.size( $tag ) + 1 ));
  345.  
  346.         //---   一致するデータを探し、サブメニューを設定   ---//
  347.         $list = [];
  348.         $st   = #FALSE;
  349.         foreach( $a, $dataList ) {
  350.             if( data.getType( $a ) == #LIST ) {
  351.                 if( list.get1st( $a ) == $str ) {
  352.                     $st   = list.getNth( $a, 2 );
  353.                     $list = list.getNth( $a, 3 );
  354.                     exit;
  355.                 }
  356.             }
  357.         }
  358.         trd.getDataPush( $trdId );
  359.         $ret = Auto.makeBbsList( $list, data.copy( $tagSub ), 2 );
  360.         if( $ret == #FALSE ) {
  361.             if( $mode == 0 ) {
  362.                 sys.local( $num );
  363.                 sys.local( $cnt );
  364.                 dialog.close();
  365.             }
  366.             return( #FALSE );
  367.         }
  368.         trd.getDataPop( $trdId );
  369.         list.putLast( $titleList,  [$str,list.getNth( $ret, 1 )] );
  370.         list.putLast( $statusList, [$st, list.getNth( $ret, 2 )] );
  371.         list.putLast( $idList,     list.getNth( $ret, 3 ));
  372.         list.putLast( $dayList,    list.getNth( $ret, 4 ));
  373.         list.putLast( $keyList,    list.getNth( $ret, 5 ));
  374.         $tagSub = [];
  375.         $cnt = $cnt + 1;
  376.         dialog.updateProg( $cnt * 100 / $num );
  377.     }
  378.  
  379.     //---   データの設定   ---//
  380.     $tagSub = list.putLast( data.copy( $tag ), -6 );
  381.     loop {
  382.         $ret = trd.getData( $trdId, $tagSub );
  383.         if( list.get1st( $ret ) == 0 ) {
  384.             exit;
  385.         }
  386.         $str = list.getNth( $ret, 2 );
  387.         $st  = #FALSE;
  388.         $id  = "";
  389.         $day = "000000";
  390.         $key = "";
  391.         foreach( $a, $dataList ) {
  392.             if( data.getType( list.getNth( $a, 3 )) == #LIST ) {
  393.                 continue;
  394.             }
  395.             if( list.get1st( $a ) == $str ) {
  396.                 $st  = list.getNth( $a, 2 );
  397.                 $id  = list.getNth( $a, 3 );
  398.                 $day = list.getNth( $a, 4 );
  399.                 $key = list.getNth( $a, 5 );
  400.                 exit;
  401.             }
  402.         }
  403.         list.putLast( $titleList,  $str );
  404.         list.putLast( $statusList, $st  );
  405.         list.putLast( $idList,     $id  );
  406.         list.putLast( $dayList,    $day );
  407.         list.putLast( $keyList,    $key );
  408.         $tagSub = [];
  409.         $cnt = $cnt + 1;
  410.         dialog.updateProg( $cnt * 100 / $num );
  411.     }
  412.  
  413.     if( $mode == 0 ) {
  414.         sys.local( $num );
  415.         sys.local( $cnt );
  416.         dialog.close();
  417.     }
  418.     return([$titleList, $statusList, $idList, $dayList, $keyList]);
  419. }
  420.  
  421.  
  422.  
  423. //------------------------------------//
  424. //---   掲示板情報を組み立て直す   ---//
  425. //------------------------------------//
  426. function    Auto.remakeBbsList(
  427.                 $titleList,
  428.                 $statusList,
  429.                 $idList,
  430.                 $dayList,
  431.                 $keyList )
  432. {
  433.     $retList = [];
  434.     $i = 1;
  435.     foreach( $a, $titleList ) {
  436.         $st = list.getNth( $statusList, $i );
  437.         if( data.getType( $a ) == #LIST ) {
  438.             $list = Auto.remakeBbsList( list.getNth( $a,  2 ),
  439.                                         list.getNth( $st, 2 ),
  440.                                         list.getNth( $idList,     $i ),
  441.                                         list.getNth( $dayList,    $i ),
  442.                                         list.getNth( $keyList,    $i ));
  443.             $list = [list.get1st( $a ), list.get1st( $st ), $list];
  444.         } else {
  445.             $list = [$a, $st,
  446.                      list.getNth( $idList,  $i ),
  447.                      list.getNth( $dayList, $i ),
  448.                      list.getNth( $keyList, $i )];
  449.         }
  450.         list.putLast( $retList, $list );
  451.         $i = $i + 1;
  452.     }
  453.     return( $retList );
  454. }
  455.  
  456.  
  457.  
  458. //--------------------------------------------//
  459. //---   リストに表示する文字列の組み立て   ---//
  460. //--------------------------------------------//
  461. function    Auto.makeListStr( $st, $tt, $day, $id, $key, $ttMaxLen ) {
  462.     if( $st == #TRUE ) {
  463.         $mark = "■";
  464.     } else {
  465.         $mark = "□";
  466.     }
  467.  
  468.     $spcSub = "                                                              ";
  469.     $ttSub  = str.join([$tt,str.left($spcSub,$ttMaxLen-str.length( $tt ))],"");
  470.  
  471.     if( $id == "" ) {
  472.         $id = "        ";
  473.     }
  474.  
  475.     if( $day == "" ) {
  476.         $day = "        ";
  477.     } elif( $day == "000000" ) {
  478.         $day = "--/--/--";
  479.     } else {
  480.         $day = str.join( [str.mid( $day, 0, 2 ),
  481.                           str.mid( $day, 2, 2 ),
  482.                           str.mid( $day, 4, 2 )], "/", );
  483.     }
  484.  
  485.     return( str.join( [$mark, $ttSub, $day, $id, $key], " " ));
  486. }
  487.  
  488.  
  489.  
  490. //----------------------------------//
  491. //---   条件指定ダイアログ制御   ---//
  492. //----------------------------------//
  493. function    Auto.setExt( $idList, $dayList, $keyList, $no ) {
  494.     //---   ボタンの設定   ---//
  495.     $idBtn     = dialog.makeButton( 1, "  ID名簿  ", 0, 0 );
  496.     $tdayBtnId = dialog.makeButton( 1, "   今  日   ", 0, 0 );
  497.  
  498.     //---   初期値設定   ---//
  499.     $iiList = [list.getNth( $idList,  $no )];
  500.     if( list.getNth( $dayList, $no ) == "000000" ) {
  501.         $dyList = [""];
  502.     } else {
  503.         $dyList = [list.getNth( $dayList, $no )];
  504.     }
  505.     $kyList = [list.getNth( $keyList, $no )];
  506.  
  507.     //---   ダイアログリストの設定   ---//
  508.     $dialogList = ["巡回掲示板の条件設定", 0, -1, -1, $setBtnId,
  509.             ["", 1024,       [0],     [""], [""]],
  510.             ["基準日付け: 例) 1993年1月30日→930130        ",
  511.                  1025,       [6,0],  [""], $dyList],
  512.             ["", $tdayBtnId, [0],    [""], [""]],
  513.             ["検索ID : 英字3+数字5 例) AAA00000    ",
  514.                  1025,       [8,0],  [""], $iiList],
  515.             ["", $idBtn,     [0],    [""], [""]],
  516.             ["検索キー :",
  517.                  1025,       [40,0], [""], $kyList],
  518.             ["", 1024,       [0],    [""], [""]],
  519.             ["", $canBtnId,  [0],    [""], [""]],
  520.             ["", $setBtnId,  [0],    [""], [""]]
  521.     ];
  522.  
  523. DIALOG.OPEN:
  524.     //---   ダイアログの表示   ---//
  525.     sys.pushCursor( 80 );
  526.     dialog.open( $dialogList );
  527.     sys.popCursor();
  528.  
  529.     $btnId = list.getNth( $$DIALOG.RETURN, 1 );
  530.  
  531.     //---   設定状態の退避   ---//
  532.     $str = list.get1st( list.getNth( $$DIALOG.RETURN, 3 ));
  533.     list.del1st( $dyList );
  534.     list.put1st( $dyList, $str );
  535.     $str = list.get1st( list.getNth( $$DIALOG.RETURN, 4 ));
  536.     list.del1st( $iiList );
  537.     list.put1st( $iiList, $str );
  538.     $str = list.get1st( list.getNth( $$DIALOG.RETURN, 5 ));
  539.     list.del1st( $kyList );
  540.     list.put1st( $kyList, $str );
  541.  
  542.     //---   各種ボタン処理   ---//
  543.     if( $btnId == $tdayBtnId ) {                // 「今日」ボタン
  544.         $day = time.getDate();
  545.         $day = str.join([str.right( data.toString( list.get1st( $day )), 2 ),
  546.                            data.toString2( list.getNth( $day, 2 ), 2, "0", 0 ),
  547.                            data.toString2( list.getNth( $day, 3 ), 2, "0", 0 )],
  548.                          "" );
  549.         list.del1st( $dyList );
  550.         list.put1st( $dyList, $day );
  551.         goto DIALOG.OPEN;
  552.     } elif( $btnId == $idBtn ) {                // 「ID名簿」ボタン
  553.         //---   ID名簿の起動   ---//
  554.         $ret = mod.idBase( 1, #FALSE );
  555.         if( $ret == #FALSE ) {
  556.             //---   どこかで使用中である   ---//
  557.             $saveXsize = dialog.getDefaultXSize();
  558.             dialog.setDefaultXSize( 312 );
  559.             sys.pushCursor( 80 );
  560.             dialog.ask(["━━━━━━━━━  ID名簿  ━━━━━━━━━",
  561.                         "",
  562.                         "  ID名簿がすでに他プロセスで使用されています。",
  563.                         "  起動中のID名簿を終了させて下さい。          ",
  564.                         ""],["確認"] );
  565.             sys.popCursor();
  566.             dialog.setDefaultXSize( $saveXsize );
  567.             goto DIALOG.OPEN;
  568.         }
  569.         if( list.size( $ret ) != 0 ) {
  570.             //---   復帰データをリストに設定する   ---//
  571.             list.del1st( $iiList );
  572.             list.put1st( $iiList, list.get1st( $ret ));
  573.         }
  574.         goto DIALOG.OPEN;
  575.     } elif( $btnId == $setBtnId ) {                // 「設定」ボタン
  576.         //---   日付けの正当性チェック   ---//
  577.         $str = list.get1st( $dyList );
  578.         list.del1st( $dyList );
  579.         if( list.getNth( $dayList, $no ) == "000000" ) {
  580.             list.put1st( $dyList, "" );
  581.         } else {
  582.             list.put1st( $dyList, list.getNth( $dayList, $no ));
  583.         }
  584.         if( $str != "" ) {
  585.             if( str.length( $str ) < 6 ) {
  586.                 $errMsg = "             日付に誤りがあります。           ";
  587.                 goto DATE.ERROR;
  588.             }
  589.             $year = data.toNumber( str.mid( $str, 0, 2 )) + 1900;
  590.             if(( $year < 1990 )||( $year > 1999 )) {
  591.                 $errMsg = "1990年から1999年の範囲で指定を行ってください。";
  592.                 goto DATE.ERROR;
  593.             }
  594.             if(( $year % 4 == 0 )&&( $year % 100 != 0 )||( $year % 400 == 0 )){
  595.                 $daysList = [31,29,31,30,31,30,31,31,30,31,30,31];
  596.             } else {
  597.                 $daysList = [31,28,31,30,31,30,31,31,30,31,30,31];
  598.             }
  599.             $mon  = data.toNumber( str.mid( $str, 2, 2 ));
  600.             if(( $mon < 1 )||( $mon > 12 )) {
  601.                 $errMsg = "           月の指定に誤りがあります。         ";
  602.                 goto DATE.ERROR;
  603.             }
  604.             $day  = data.toNumber( str.mid( $str, 4, 2 ));
  605.             if(( $day < 1 )||( $day > list.getNth( $daysList, $mon ))) {
  606.                 $errMsg = "           日の指定に誤りがあります。         ";
  607.                 goto DATE.ERROR;
  608.             }
  609.         }
  610.         list.del1st( $dyList );
  611.         list.put1st( $dyList, $str );
  612.  
  613.         //---   検索IDの正当性チェック   ---//
  614.         $str = list.get1st( $iiList );
  615.         list.del1st( $iiList );
  616.         list.put1st( $iiList, list.getNth( $idList, $no ));
  617.         if( $str != "" ) {
  618.             if( str.length( $str ) != 8 ) {
  619.                 $errMsg = "           検索IDに誤りがあります。         ";
  620.                 goto DATE.ERROR;
  621.             }
  622.             $i = 1;
  623.             foreach( $a, str.split( $str, "" )) {
  624.                 if( $i < 4 ) {
  625.                     if((($a < "A")||($a > "Z"))&&(($a < "a")||($a > "z"))) {
  626.                         $errMsg =
  627.                             "           検索IDに誤りがあります。         ";
  628.                         goto DATE.ERROR;
  629.                     }
  630.                 } else {
  631.                     if(( $a < "0" )||( $a > "9" )) {
  632.                         $errMsg =
  633.                             "           検索IDに誤りがあります。         ";
  634.                         goto DATE.ERROR;
  635.                     }
  636.                 }
  637.                 $i = $i + 1;
  638.             }
  639.             $str = str.smallToLarge( $str );
  640.         }
  641.         list.del1st( $iiList );
  642.         list.put1st( $iiList, $str );
  643.  
  644.         //---   結果の反映   ---//
  645.         list.delNth( $idList,  $no );
  646.         list.putNth( $idList,  $no - 1, list.get1st( $iiList ));
  647.         list.delNth( $dayList, $no );
  648.         if( list.get1st( $dyList ) == "" ) {
  649.             list.putNth( $dayList, $no - 1, "000000" );
  650.         } else {
  651.             list.putNth( $dayList, $no - 1, list.get1st( $dyList ));
  652.         }
  653.         list.delNth( $keyList, $no );
  654.         list.putNth( $keyList, $no - 1, list.get1st( $kyList ));
  655.     } else {                                    // 「取消」ボタン
  656.         dialog.delButton( $idBtn     );
  657.         dialog.delButton( $tdayBtnId );
  658.         return( 0 );
  659.     }
  660.     dialog.delButton( $idBtn     );
  661.     dialog.delButton( $tdayBtnId );
  662.     return( 1 );
  663.  
  664. DATE.ERROR:
  665.     $saveXsize = dialog.getDefaultXSize();
  666.     dialog.setDefaultXSize( 288 );
  667.     sys.pushCursor( 80 );
  668.     dialog.ask(["━━━━━━━  巡回条件の設定  ━━━━━━━",
  669.                 "",
  670.                 $errMsg,
  671.                 ""],["確認"]);
  672.     sys.popCursor();
  673.     dialog.setDefaultXSize( $saveXsize );
  674.     goto DIALOG.OPEN;
  675. }
  676.